1. Field of the Invention
The present invention relates to a turbo encoder, and more specifically to a turbo encoder using a tail-biting method.
2. Description of Related Art
Turbo-codes have received considerable attention due to their powerful error correcting capability, reasonable complexity, and flexibility in different block sizes and code rates. Turbo-codes are a kind of a convolutional code.
FIG. 1 is a block diagram of a turbo encoder.
Referring to FIG. 1, the turbo encoder includes two recursive systematic convolutional (RSC) encoders 100 and 110 and an interleaver 120.
Turbo encoders are known to have one systematic bit. The turbo encoder in FIG. 1 has two systematic bits Vt0 and Vt1 to increase a transfer rate. Two systematic bits can encode two input bits ut0 and ut1 per one clock cycle.
According to the characteristic of the convolutional code, turbo encoders can encode almost infinite input sequences. Turbo encoders begin encoding with an initial state and go on continuously. An example of the initial state is a zero-state, in which all registers of the turbo encoder output a logic ‘0’.
Due to practical constraints (e.g., synchronization, channel estimation, etc.), many communication systems are block-oriented, and therefore, methods are needed for obtaining code blocks of finite length from a convolutional encoder.
Turbo encoders start encoding at an all-zero state and end encoding at an all-zero state by appending a block of tail bits to data bits to obtain the code blocks. The tail bits cause a loss of the transfer rate due to tail bit termination and other problems, particularly if codewords are short.
FIG. 2 is a state diagram of a turbo encoding method.
Referring to FIG. 2, the turbo encoding method appends a block of tail bits to data bits to obtain the code blocks.
Tail-biting prevents the loss of the transfer rate without degrading error protection ability. Using tail-biting, the state of the encoder at the beginning of the encoding process is not necessarily the all-zero state, but may be another state. Using tail-biting, the encoder is controlled in such a way that the encoder starts and ends the encoding process at the same state. Turbo decoders can determine the initial state and a final state of the turbo encoders by encoding input sequences with the initial state identical to the final state. Thus, the transfer rate loss due to the tail bits may be avoided.
The turbo encoding process using tail-biting is divided into three steps:
<Step1> Determine the last state of the encoder for input sequences. The last state corresponds to a zero state response. The encoder starts at the all-zero state, all input sequences are input, and the output bits are ignored. The last state corresponds to an encoding state of the turbo encoder when the turbo encoder starts an encoding at the zero state.
<Step2> Determine a final state of the turbo encoder using the last state. The final state is identical to an initial state of the turbo encoder. The final state corresponds to an encoding state of the turbo encoder when the turbo encoder starts an encoding with the initial state. <Step 2> can be performed by finding the final state in a look-up table containing the final state corresponding to the last state.
<Step3> Encode input sequences with the initial state that is identical to the final state.
<Step3> can be performed by the hardware identical to that of <Step1>. <Step2> can be performed by the look-up table that stores the final state and the initial state corresponding to the last state.
The overall calculation of tail-biting can be time consuming. Although the hardware used for <Step1> may be used for <Step3>, <Step1> and <Step3> perform encoding twice, adding to the processing time of the turbo encoder and increasing power consumption.